1
'****************************** Module Header ******************************'
2 ' Module Name: MainWindow.xaml.vb
3 ' Project: VBWPFTwoLevelGrouping
4 ' Copyright (c) Microsoft Corporation.
6 ' The sample demonstrates how to display two level grouped data in WPF.
8 ' This source is subject to the Microsoft Public License.
9 ' See http://www.microsoft.com/opensource/licenses.mspx#Ms-PL.
10 ' All other rights reserved.
12 ' THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
13 ' EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
14 ' WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
15 '***************************************************************************'
17 Imports System
.Collections
.ObjectModel
20 ''' Interaction logic for MainWindow.xaml
22 Partial
Public Class MainWindow
29 Private _students
As ObservableCollection(Of Student
)
31 Private Sub Window_Loaded(ByVal sender
As Object, ByVal e
As RoutedEventArgs
)
33 _students
= New ObservableCollection(Of Student
)()
35 _students
.Add(New Student
With {.ID
= 1, .Name
= "Johnson", .Class
= "Class A", .Grade
= "Grade 1"})
36 _students
.Add(New Student
With {.ID
= 2, .Name
= "Bill", .Class
= "Class A", .Grade
= "Grade 1"})
37 _students
.Add(New Student
With {.ID
= 3, .Name
= "Amy", .Class
= "Class B", .Grade
= "Grade 1"})
38 _students
.Add(New Student
With {.ID
= 4, .Name
= "Polo", .Class
= "Class B", .Grade
= "Grade 1"})
39 _students
.Add(New Student
With {.ID
= 5, .Name
= "Shalia", .Class
= "Class C", .Grade
= "Grade 1"})
40 _students
.Add(New Student
With {.ID
= 6, .Name
= "Olay", .Class
= "Class C", .Grade
= "Grade 1"})
41 _students
.Add(New Student
With {.ID
= 7, .Name
= "Sea", .Class
= "Class C", .Grade
= "Grade 1"})
42 _students
.Add(New Student
With {.ID
= 8, .Name
= "Jim", .Class
= "Class A", .Grade
= "Grade 2"})
43 _students
.Add(New Student
With {.ID
= 9, .Name
= "Tim", .Class
= "Class A", .Grade
= "Grade 2"})
44 _students
.Add(New Student
With {.ID
= 10, .Name
= "Bruce", .Class
= "Class A", .Grade
= "Grade 2"})
45 _students
.Add(New Student
With {.ID
= 11, .Name
= "Bockei", .Class
= "Class B", .Grade
= "Grade 2"})
46 _students
.Add(New Student
With {.ID
= 12, .Name
= "Obama", .Class
= "Class A", .Grade
= "Grade 3"})
47 _students
.Add(New Student
With {.ID
= 13, .Name
= "Linkon", .Class
= "Class B", .Grade
= "Grade 3"})
48 _students
.Add(New Student
With {.ID
= 14, .Name
= "Asura", .Class
= "Class B", .Grade
= "Grade 3"})
49 _students
.Add(New Student
With {.ID
= 15, .Name
= "Jack", .Class
= "Class C", .Grade
= "Grade 3"})
50 _students
.Add(New Student
With {.ID
= 16, .Name
= "Rickie", .Class
= "Class C", .Grade
= "Grade 3"})
52 Dim _csv
As New CollectionViewSource()
53 _csv
.Source
= _students
55 ' Group by Grade and Class
56 _csv
.GroupDescriptions
.Add(New PropertyGroupDescription("Grade"))
57 _csv
.GroupDescriptions
.Add(New PropertyGroupDescription("Class"))
59 Me.listView1
.DataContext
= _csv
63 Public Class GroupItemStyleSelector
64 Inherits StyleSelector
65 Public Overloads Overrides
Function SelectStyle(ByVal item
As Object, ByVal container
As DependencyObject
) As Style
68 Dim group
As CollectionViewGroup
= TryCast(item
, CollectionViewGroup
)
69 Dim window
As Window
= Application
.Current
.MainWindow
71 If Not group
.IsBottomLevel
Then
72 s
= TryCast(window
.FindResource("GroupHeaderStyleForFirstLevel"), Style
)
74 s
= TryCast(window
.FindResource("GroupHeaderStyleForSecondLevel"), Style
)